Plug a few memory leaks
authorMatthias Clasen <mclasen@redhat.com>
Mon, 11 Feb 2013 05:42:28 +0000 (00:42 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 11 Feb 2013 05:42:28 +0000 (00:42 -0500)
The accessibles for icon view items were not properly freed
in all cases.
https://bugzilla.gnome.org/show_bug.cgi?id=683311

gtk/a11y/gtkiconviewaccessible.c

index cace6c1e787c51604ea92db29276bd3c1faef978..db025986e87b534fafd929d2b80e92892109fa1f 100644 (file)
@@ -1142,7 +1142,8 @@ gtk_icon_view_accessible_model_row_deleted (GtkTreeModel *tree_model,
       gtk_icon_view_item_accessible_add_state (GTK_ICON_VIEW_ITEM_ACCESSIBLE (info->item), ATK_STATE_DEFUNCT, TRUE);
       g_signal_emit_by_name (atk_obj, "children-changed::remove",
                              index, NULL, NULL);
-      view->priv->items = g_list_remove_link (view->priv->items, deleted_item);
+      view->priv->items = g_list_delete_link (view->priv->items, deleted_item);
+      g_object_unref (info->item);
       g_free (info);
     }
 
@@ -1241,6 +1242,7 @@ gtk_icon_view_accessible_clear_cache (GtkIconViewAccessible *view)
   while (items)
     {
       info = (GtkIconViewItemAccessibleInfo *) items->data;
+      gtk_icon_view_item_accessible_add_state (GTK_ICON_VIEW_ITEM_ACCESSIBLE (info->item), ATK_STATE_DEFUNCT, TRUE);
       g_object_unref (info->item);
       g_free (items->data);
       items = items->next;